package com.book.dao;

import com.book.pojo.Book;

import java.util.List;

/**
 * @author Baobodadazz
 */
public interface BookDao {

    /**
     * 将Book对象的数据添加到数据库
     * @param book book对象
     * @return -1则执行失败，其它则为影响的行数
     */
    public int addBook(Book book);

    /**
     * 通过book的id删除book数据
     * @param id 删除书的id
     * @return -1则执行失败，其它则为影响的行数
     */
    public int deleteBookById(Integer id);

    /**
     * 更新书的信息
     * @param book 传入新的信息（id和原来的一样）
     * @return -1则执行失败，其它则为影响的行数
     */
    public int updateBook(Book book);

    /**
     * 通过id查询书信息
     * @param id 要查找的id
     * @return 书Book对象
     */
    public Book queryBookById(Integer id);

    /**
     * 模糊查找
     * @param name 模糊查找的名称
     * @return 模糊查找的表
     */
    public List<Book> queryBooksByName(String name);

    /**
     * 查询所有书，返回一个列表
     * @return Book的列表
     */
    public List<Book> queryBooks();

    /**
     * 查询book的总数
     * @return book的总数
     */
    Integer queryForPageTotalCount();

    /**
     * 用于按页查找，返回对应的书的列表
     * @param begin 信息开始的索引
     * @param pageSize 大小
     * @return 结果列表
     */
    List<Book> queryForPageItems(int begin, int pageSize);

    /**
     * 返回对应价格间书籍的数量
     * @param min 价格最小值
     * @param max 价格最大值
     * @return 在价格区间的书的数量
     */
    Integer queryForPageTotalCountByPrice(int min, int max);

    /**
     * 按页返回对应价格间书籍的列表
     * @param begin 开始的位置
     * @param pageSize 每页最大数量
     * @param min 价格最小值
     * @param max 价格最大值
     * @return 返回对应列表
     */
    List<Book> queryForPageItemsByPrice(int begin, int pageSize, int min, int max);
}
